/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Engine.Fisica;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.geom.Ellipse2D;
import java.net.URL;
import java.util.ArrayList;
import jogopoo.Grafico.GrafCenario;
import jogopoo.Personagem.Personagens;

/**
 *Classe responsavel pelos objetos do tipo planeta
 * @author Administrador
 */
public class Planeta extends Personagens {

    public Planeta(GrafCenario cenario, int x, int y, double m, int tamanho, char cor) {
        super(cenario);
        posicao.x = x;
        posicao.y = y;
        this.m = m;
        this.raio = (tamanho + 1) * 16;
        this.vida = 10 * (raio / 16) - 13;
        sprite = new Image[1];
        int num = (3 * tamanho - 3);
        if (cor == 'b') {
            num += 1;
        } else if (cor == 'r') {
            num += 2;
        }
        String filename = "/imagens/planetas/planet" + num + ".png";
        URL url = Clip.class.getResource(filename);
        sprite[0] = Toolkit.getDefaultToolkit().getImage(url);

    }

    @Override
    public void desenha(Graphics2D g2) {

        g2.drawImage(this.sprite[0], posicao.x - raio, posicao.y - raio, cenario);
    }

    /**
     * Retorna a Massa do planeta
     */
    public double getM() {
        return m;
    }
/**
 * Retorna o raio do planeta
 * @return
 */
    public int getRaio() {
        return raio;
    }
/**
 * Retorna a lista de elipses "buracos"
 * @return
 */
    public ArrayList<Ellipse2D> getListaElipses() {
        return this.lista_ellipses;
    }
/**
 * metodo que sera chamado quando ocorre colisao entre tiros
 * @param x
 * @param y
 */
    public void colide(int x, int y) {
        if (lista_ellipses.size() > vida) {
            cenario.getListaPlaneta().remove(this);
        } else {
            Ellipse2D elps = new Ellipse2D.Float();
            elps.setFrame(x - 15, y - 15, 30, 30);
            lista_ellipses.add(elps);
            this.m += -m * 0.1;
            cenario.setTremeStrong(5);
            cenario.setTreme(true);
        }
    }
    private double m; //massa
    private int raio;
    private int vida;
    private ArrayList<Ellipse2D> lista_ellipses = new ArrayList<Ellipse2D>();
    private Image[] sprite;
}
